home *** CD-ROM | disk | FTP | other *** search
/ Workbench Add-On / Workbench Add-On - Volume 1.iso / BBS-Archive / Comm / AmiTCP30b2.lha / src / l / inet-handler / readargs.c < prev    next >
C/C++ Source or Header  |  1994-04-05  |  1KB  |  68 lines

  1. /*
  2.  * readargs.c
  3.  *
  4.  * Author: Tomi Ollila <too@cs.hut.fi>
  5.  *
  6.  * Copyright (c) 1993 AmiTCP/IP Group, <amitcp-group@hut.fi>
  7.  *                    All rights reserved.
  8.  *
  9.  * Created: Fri Sep 24 15:10:32 1993 too
  10.  * Last modified: Sat Oct 16 16:57:31 1993 too
  11.  *
  12.  * $Id: readargs.c,v 1.1 1993/10/24 12:50:39 too Exp too $
  13.  *
  14.  * HISTORY
  15.  * $Log: readargs.c,v $
  16.  * Revision 1.1  1993/10/24  12:50:39  too
  17.  * Initial revision
  18.  *
  19.  */
  20.  
  21. #include <exec/types.h>
  22. #include <exec/memory.h>
  23. #include <dos/rdargs.h>
  24.  
  25. #if __GNUC__
  26. #include "inl_exec.h"
  27. #include "inl_dos.h"
  28. #elif __SASC
  29. #include <proto/exec.h>
  30. #include <proto/dos.h>
  31. #else
  32. #error compiler not currently supported.
  33. #endif
  34.  
  35. #include "readargs.h"
  36.  
  37. extern struct ExecBase *    SysBase;
  38. extern struct DosLibrary *    DOSBase;
  39.  
  40. struct readargs * readargs(char * template, int itemcount,
  41.                char *buffer, int buffersize)
  42. {
  43.   struct readargs * readargs;
  44.   LONG memsize;
  45.  
  46.   memsize = sizeof *readargs + itemcount * sizeof (LONG);
  47.   readargs = AllocMem(memsize, MEMF_PUBLIC|MEMF_CLEAR);
  48.  
  49.   if (readargs == NULL)
  50.     return NULL;
  51.  
  52.   readargs->ra_Private.RDA_Source.CS_Buffer = buffer;
  53.   readargs->ra_Private.RDA_Source.CS_Length = buffersize;
  54.   readargs->ra_Private2 = memsize;
  55.   
  56.   if (ReadArgs(template, readargs->ra_Args, &readargs->ra_Private) == NULL) {
  57.     FreeMem(readargs, memsize);
  58.     return NULL;
  59.   }
  60.   return readargs;
  61. }
  62.  
  63. void freeargs(struct readargs * rargs)
  64. {
  65.   FreeArgs(&rargs->ra_Private);
  66.   FreeMem(rargs, rargs->ra_Private2);
  67. }
  68.